package alo.p6.work3;

import alo.p6.ThreadedBinaryTreeNode;

/**
 * @ClassName InsertRightInorderTBT
 * @Description 在中序线索二叉树中插入结点
 * @Author Fanxc
 * @DATE 2021/2/7 10:17
 * @Version 1.0
 */
public class InsertRightInorderTBT {
    void insertRightInorderTBT(ThreadedBinaryTreeNode P,ThreadedBinaryTreeNode Q){
        ThreadedBinaryTreeNode temp;
        //把Q的前后进行设置
        Q.setRight(P.getRight());
        Q.setRtag(P.getRtag());
        Q.setLeft(P);
        Q.setLtag(1);
        //把P的后续进行设置
        P.setRight(Q);
        P.setRtag(0);
        ///P有右孩子时，找到右子树的第一个访问结点、
        //把他的前驱设置为Q
        if (Q.getRtag()==0){
            temp=Q.getRight();
            while (temp.getLtag()==0){
                temp=temp.getLeft();
            }
            temp.setLeft(Q);
        }
    }
}
